package com.gov.ec.rsv.igm;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.event.ActionEvent;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.primefaces.event.SelectEvent;

import com.gov.ec.rsv.interfaces.ICrudDao;
import com.gov.ec.rsv.modelo.Auditoria;
import com.gov.ec.rsv.modelo.Instalacion;
import com.gov.ec.rsv.util.FacesUtil;
import com.gov.ec.rsv.util.PrimeFaceUtil;


public class InstalacionesBean extends FacesUtil{

	
	//Objetos Permisos
//	private Boolean perEditar;
//	private Boolean perGuardar;
//	private Boolean perEliminar;
	

	 /** La variable Cliente. */
    private Instalacion instalacion;
    private List<Instalacion> listaInstalaciones;
    private Auditoria auditoria;
	
    @EJB(name = "adminCrud/local")
	private ICrudDao adminCrud;

		public InstalacionesBean() throws NamingException  {
		this.instalacion = new Instalacion();
		this.listaInstalaciones = new ArrayList<Instalacion>();
		InitialContext ic = new InitialContext();
		adminCrud= (ICrudDao) ic.lookup("RSVCCIGM/adminCrud/local");
	}
	
	/**
	 * Permite guardar o actulizar un objeto instalacion
	 * 
	 * @throws Exception 
	 */
	public void guardarArea() throws Exception {
		if (instalacion.getIdInstalaciones() !=0 ) {
					adminCrud.actualizar(instalacion);
		} else {
				adminCrud.insertar(instalacion);
		}
		resetearValores();
		super.addSuccessMessage(super.getRecursoGeneral().getString("msgEditar")+" "+this.instalacion.getDescripcion());
		this.instalacion = new Instalacion();
	}

	private void resetearValores(){
		setInstalacion(new Instalacion());
	}
	/**
	 * Permite eliminar un objeto Institucion
	 * @param event
	 * @autor 
	 */
	public void eliminarArea(ActionEvent event) {
		if (getInstalacion()!= null) {
			try{
					adminCrud.eliminar(this.instalacion);
			}catch(Exception e){
			}
		} else {
		}
	}

	/**
	 * Permite actualizar un objeto cliente
	 * @autor 
	 */
	public void editarArea() {
		if (getInstalacion()!= null) {
			super.addSuccessMessage("Cliente cargado "+this.instalacion.getDescripcion());
			PrimeFaceUtil.saltarTabAcordeon("form:acoPanTec", 0);
		} else {
			
			super.addSuccessMessage(super.getRecursoGeneral().getString("msgEditar")+" "+this.instalacion.getDescripcion());
		}

	}

	private void cargarInstalacion() {
		listaInstalaciones = new ArrayList<Instalacion>();
		List<Object> clienteTmp = adminCrud.consultarTodo(new Instalacion());
		for (Object cliTmp : clienteTmp) {
			listaInstalaciones.add((Instalacion) cliTmp);
		}
	}
	/**
	 * Selecciona un objeto Institucion de un dataTable
	 * @param event
	 * @autor
	 */
	public void onRowSelect(SelectEvent event) {
		setInstalacion((Instalacion) event.getObject());
	}


	public Instalacion getInstalacion() {
		return instalacion;
	}

	public void setInstalacion(Instalacion instalacion) {
		this.instalacion = instalacion;
	}

	public List<Instalacion> getListaInstalaciones() {
		cargarInstalacion();
		return listaInstalaciones;
	}

	public void setListaInstalaciones(List<Instalacion> listaInstalaciones) {
		this.listaInstalaciones = listaInstalaciones;
	}

	public Auditoria getAuditoria() {
		return auditoria;
	}

	public void setAuditoria(Auditoria auditoria) {
		this.auditoria = auditoria;
	}
}
